// const t = require("@babel/types");
// const babel = require("babel-core");
const { filter } = require("auto-i18n-plugin-core"); // 导入核心处理逻辑（国际化相关功能）
const { parse, transformFromAstSync } = require("@babel/core");
const { generate } = require("@babel/generator");
const PReact = require("@babel/preset-react");
const PType = require("@babel/preset-typescript");

const left = 1;
const right = 2;

// babel-plugin-optimize-code.js
function optimizeCodePlugin({ types: t }, options = {}) {
  const {
    removeConsole = process.env.NODE_ENV === "production",
    optimizeStrings = true,
    removeUnusedVars = true,
    simplifyBooleans = true,
  } = options;
  debugger;
  return {
    name: "optimize-code",
    visitor: {
      // 1. 移除console语句
      CallExpression(path) {
        debugger;
        if (!removeConsole) return;

        if (
          t.isMemberExpression(path.node.callee) &&
          t.isIdentifier(path.node.callee.object, { name: "console" })
        ) {
          // 如果console调用是表达式语句，直接移除
          if (t.isExpressionStatement(path.parent)) {
            path.parentPath.remove();
          } else {
            // 否则替换为undefined
            path.replaceWith(t.identifier("undefined"));
          }
        }
      },
    },
  };
}
// 代码字符串
const code1 = `
import React from 'react'

function App() {
    return <div>企业级智能分析平台</div>
}

export default App
`;

// 解析成AST
const ast = parse(code1, {
  presets: [PReact.default], // ✅ 必须！提供对 JSX 的支持
  sourceType: "module", // 支持 ES Module 语法，比如 import/export
  // 如果你用 TypeScript，可以加上 @babel/preset-typescript
  // presets: ["@babel/preset-react", "@babel/preset-typescript"],
});
console.log(ast, "ast");

const result = transformFromAstSync(ast, code1, {
  plugins: [filter.default({ source: code1 })], // 使用核心模块提供的 `filter` 插件
});
console.log(result);
// let result = babel.transformSync(sourceObj.source, {
//   configFile: false, // 不加载本地 Babel 配置文件
//   plugins: [filter.default(sourceObj)], // 使用核心模块提供的 `filter` 插件
// });
// const transformedAst = babel.transformSync(code, {
//   plugins: [optimizeCodePlugin],
// });
// console.log(transformedAst, "transformedAst");
// 2. 使用 @babel/generator 将 AST 转回代码
// const { code, map } = generate(ast);

// // 3. 输出生成的代码
// console.log(code);
